home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / VISUALBA / VBSETUPK.ZIP / SETUP1.BAS < prev    next >
BASIC Source File  |  1993-10-14  |  27KB  |  787 lines

  1. Dim gGroupName As String    ' Contains the ProgMan group name for the application
  2.  
  3. Sub AddShareIfNeeded (SharePath$, ShareFile$)
  4.     On Error GoTo ShareError
  5.  
  6.     fh% = FreeFile
  7.     Open "C:\AUTOEXEC.BAT" For Input As fh%
  8.  
  9.     fFound% = 0
  10.     While Not fFound% And Not EOF(fh%)
  11.     Line Input #fh%, Temp1$
  12.     If InStr(1, UCase$(Temp1$), "REM") = 0 And InStr(1, Temp1$, ";") = 0 And InStr(1, UCase$(Temp1$), "SHARE") > 0 Then
  13.        fFound% = True
  14.     End If
  15.     Wend
  16.  
  17.     Close #fh%
  18.  
  19.     If Not fFound% Then
  20.     MsgBox "Please add <PATH>SHARE.EXE /L:500 to your AUTOEXEC.BAT"
  21.     End If
  22.  
  23.     Exit Sub
  24. ShareError:
  25.     Close #fh%, #fh2%
  26.     Exit Sub
  27. End Sub
  28.  
  29. '-------------------------------------------------------
  30. ' Centers the passed form just above center on the screen
  31. '-------------------------------------------------------
  32. Sub CenterForm (x As Form)
  33.   
  34.     Screen.MousePointer = 11
  35.     x.Top = (Screen.Height * .85) / 2 - x.Height / 2
  36.     x.Left = Screen.Width / 2 - x.Width / 2
  37.     Screen.MousePointer = 0
  38.  
  39. End Sub
  40.  
  41. Sub ConcatSplitFiles (firstfile$, cSplit%)
  42.     Dim x%, fh1%, fh2%, outfile$, outfileLen&, CopyLeftOver&, CopyChunk#, filevar$
  43.     Dim iFileMax%, iFile%, y%
  44.  
  45.     For x% = 2 To cSplit%
  46.     
  47.     fh1% = FreeFile
  48.     Open Left$(firstfile$, Len(firstfile$) - 1) + Format$(1) For Binary As fh1%
  49.         
  50.     fh2% = FreeFile
  51.     outfile$ = Left$(firstfile$, Len(firstfile$) - 1) + Format$(x%)
  52.     Open outfile$ For Binary As fh2%
  53.         
  54.     ' Goto the end of file (plus one bytes) to start writing data
  55.     Seek #fh1%, LOF(fh1%) + 1
  56.  
  57.     outfileLen& = LOF(fh2%)
  58.     CopyLeftOver& = outfileLen& Mod 100
  59.     CopyChunk# = (outfileLen& - CopyLeftOver&) / 100
  60.     filevar$ = String$(CopyLeftOver&, 32)
  61.     Get #fh2%, , filevar$
  62.     Put #fh1%, , filevar$
  63.     filevar$ = String$(CopyChunk#, 32)
  64.     iFileMax% = 100
  65.     For iFile% = 1 To iFileMax%
  66.         Get #fh2%, , filevar$
  67.         Put #fh1%, , filevar$
  68.     Next iFile%
  69.  
  70.     Close fh1%, fh2%
  71.     y% = SetTime(outfile$, firstfile$)
  72.     Kill outfile$
  73.  
  74.     Next x%
  75.     
  76.     FileCopy Left$(firstfile$, Len(firstfile$) - 1) + Format$(1), firstfile$
  77.     Kill Left$(firstfile$, Len(firstfile$) - 1) + Format$(1)
  78. End Sub
  79.  
  80. '---------------------------------------------------------------
  81. ' Copies file SrcFilename from SourcePath to DestinationPath.
  82. '
  83. ' Returns 0 if it could not find the file, or other runtime
  84. ' error occurs.  Otherwise, returns true.
  85. '
  86. ' If the source file is older, the function returns success (-1)
  87. ' even though no file was copied, since no error occurred.
  88. '---------------------------------------------------------------
  89. Function CopyFile (ByVal SourcePath As String, ByVal DestinationPath As String, ByVal SrcFilename As String, ByVal DestFileName As String)
  90. ' ----- VerInstallFile() flags -----
  91.     Const VIFF_FORCEINSTALL% = &H1, VIFF_DONTDELETEOLD% = &H2
  92.     Const OF_DELETE% = &H200
  93.     Const VIF_TEMPFILE& = &H1
  94.     Const VIF_MISMATCH& = &H2
  95.     Const VIF_SRCOLD& = &H4
  96.  
  97.     Const VIF_DIFFLANG& = &H8
  98.     Const VIF_DIFFCODEPG& = &H10
  99.     Const VIF_DIFFTYPE& = &H20
  100.     Const VIF_WRITEPROT& = &H40
  101.     Const VIF_FILEINUSE& = &H80
  102.     Const VIF_OUTOFSPACE& = &H100
  103.     Const VIF_ACCESSVIOLATION& = &H200
  104.     Const VIF_SHARINGVIOLATION = &H400
  105.     Const VIF_CANNOTCREATE = &H800
  106.     Const VIF_CANNOTDELETE = &H1000
  107.     Const VIF_CANNOTRENAME = &H2000
  108.     Const VIF_CANNOTDELETECUR = &H4000
  109.     Const VIF_OUTOFMEMORY = &H8000
  110.  
  111.     Const VIF_CANNOTREADSRC = &H10000
  112.     Const VIF_CANNOTREADDST = &H20000
  113.  
  114.     Const VIF_BUFFTOOSMALL = &H40000
  115.     Dim TmpOFStruct As OFStruct
  116.     On Error GoTo ErrorCopy
  117.  
  118.     Screen.MousePointer = 11
  119.  
  120.     '--------------------------------------
  121.     ' Add ending \ symbols to path variables
  122.     '--------------------------------------
  123.     If Right$(SourcePath$, 1) <> "\" Then
  124.     SourcePath$ = SourcePath$ + "\"
  125.     End If
  126.     If Right$(DestinationPath$, 1) <> "\" Then
  127.     DestinationPath$ = DestinationPath$ + "\"
  128.     End If
  129.     
  130.     '----------------------------
  131.     ' Update status dialog info
  132.     '----------------------------
  133.     Statusdlg.Label1.Caption = "Source file: " + Chr$(10) + Chr$(13) + UCase$(SourcePath$ + SrcFilename$)
  134.     Statusdlg.Label1.Refresh
  135.     Statusdlg.Label2.Caption = "Destination file: " + Chr$(10) + Chr$(13) + UCase$(DestinationPath$ + DestFileName$)
  136.     Statusdlg.Label2.Refresh
  137.  
  138.     '-----------------------------------------
  139.     ' Check the validity of the path and file
  140.     '-----------------------------------------
  141. CheckForExist:
  142.     If Not FileExists(SourcePath$ + SrcFilename$) Then
  143.     Screen.MousePointer = 0
  144.     x% = MsgBox("Error occurred while attempting to copy file.  Could not locate file: """ + SourcePath$ + SrcFilename$ + """", 34, "SETUP")
  145.     Screen.MousePointer = 11
  146.     If x% = 3 Then
  147.         CopyFile = False
  148.     ElseIf x% = 4 Then
  149.         GoTo CheckForExist
  150.     ElseIf x% = 5 Then
  151.         GoTo SkipThisFile
  152.     End If
  153.     Else
  154.     '-------------------------------------------------
  155.     ' VerInstallFile installs the file. We need to initialize
  156.     ' some arguments for the temp file that is created by the call
  157.     '-------------------------------------------------
  158. TryToCopyAgain:
  159.     CurrDir$ = String$(255, 0)
  160.     TmpFile$ = String$(255, 0)
  161.     lpwTempFileLen% = 255
  162.     InFileVer$ = GetFileVersion(SourcePath$ + SrcFilename$)
  163.     OutFileVer$ = GetFileVersion(DestinationPath$ + DestFileName$)
  164.     
  165.     ' Install if no version info is available
  166.     If Len(InFileVer$) <> 0 And Len(OutFileVer$) <> 0 Then
  167.         ' Don't install older or same version of file
  168.         If InFileVer$ <= OutFileVer$ And SourcePath <> DestinationPath Then
  169.         UpdateStatus GetFileSize(SourcePath$ + SrcFilename$)
  170.         CopyFile = True
  171.         Exit Function
  172.         End If
  173.     End If
  174.  
  175.     Result& = VerInstallFile&(0, SrcFilename$, DestFileName$, SourcePath$, DestinationPath$, CurrDir$, TmpFile$, lpwTempFileLen%)
  176.  
  177.     '--------------------------------------------
  178.     ' After copying, update the installation meter
  179.     '---------------------------------------------
  180.     
  181.     S$ = DestinationPath$
  182.     If Right$(S$, 1) <> "\" Then S$ = S$ + "\"
  183.     S$ = S$ + DestFileName$
  184.     If Not TryAgain% Then UpdateStatus GetFileSize(S$)
  185.  
  186.     '--------------------------------
  187.     ' There are many return values that you can test for.
  188.     ' The constants are listed above.
  189.     ' The following lines of code return will set the Function to
  190.     ' True if the VerInstallFile call was successful.
  191.     '
  192.     ' If the call was unsuccessful due to a different language on the
  193.     ' users machine, VerInstallFile is called again to force installation.
  194.     ' You can change this to not install if you choose.
  195.     ' Be careful about using FORCEINSTALL.  Other flags could be
  196.     ' set which indicate that this file should not be overridden.
  197.     '
  198.     ' Under any other circumstance, the tempfile created by VerInstallFile
  199.     ' is removed using OpenFile and the CopyFile function returns false.
  200.     '--------------------------------------------------------
  201.     
  202.     If Result& = 0 Or (Result& And VIF_SRCOLD&) = VIF_SRCOLD& Then
  203.         CopyFile = True
  204.     ElseIf (Result& And VIF_DIFFLANG&) = VIF_DIFFLANG& Then
  205.         Result& = VerInstallFile&(VIFF_FORCEINSTALL%, SrcFilename$, DestFileName$, SourcePath$, DestinationPath$, CurrDir$, TmpFile$, lpwTempFileLen%)
  206.         CopyFile = True
  207.     ElseIf (Result& And VIF_DIFFTYPE&) = VIF_DIFFTYPE& Then
  208.         'Fixes problem where the 3.0 version of THREED does not overwrite the 2.0 version
  209.         'Will fix any other problem where a file doesn't install because the type changed from one version to the next
  210.         Result& = VerInstallFile&(VIFF_FORCEINSTALL%, SrcFilename$, DestFileName$, SourcePath$, DestinationPath$, CurrDir$, TmpFile$, lpwTempFileLen%)
  211.         CopyFile = True
  212.     ElseIf (Result& And VIF_WRITEPROT&) = VIF_WRITEPROT& Then
  213.         Result& = VerInstallFile&(VIFF_FORCEINSTALL%, SrcFilename$, DestFileName$, SourcePath$, winSysDir$ + "\", CurrDir$, TmpFile$, lpwTempFileLen%)
  214.         CopyFile = True
  215.     ElseIf (Result& And VIF_CANNOTREADSRC) = VIF_CANNOTREADSRC Then
  216.         ' VerInstallFile does will not handle compressed files that have been split.
  217.         ' Use VB's FileCopy stmt
  218.         FileCopy SourcePath$ + SrcFilename$, DestinationPath$ + DestFileName$
  219.         CopyFile = True
  220.